import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';

import 'package:iterator/main.dart';

void main() {
  testWidgets('Iterator demo test', (WidgetTester tester) async {
    // 构建我们的应用并触发一帧
    await tester.pumpWidget(const IteratorDemoApp());

    // 验证初始状态
    expect(find.text('当前值: 未开始'), findsOneWidget);
    expect(find.text('下一步'), findsOneWidget);

    // 点击下一步按钮并验证第一次迭代
    await tester.tap(find.text('下一步'));
    await tester.pump();
    expect(find.text('当前值: 1'), findsOneWidget);
    expect(find.text('调用 moveNext() 返回 true'), findsOneWidget);
    expect(find.text('调用 current 获取值: 1'), findsOneWidget);

    // 继续点击直到迭代结束
    for (int i = 2; i <= 5; i++) {
      await tester.tap(find.text('下一步'));
      await tester.pump();
      expect(find.text('当前值: $i'), findsOneWidget);
    }

    // 最后一次点击应该显示迭代结束
    await tester.tap(find.text('下一步'));
    await tester.pump();
    expect(find.text('调用 moveNext() 返回 false - 迭代结束'), findsOneWidget);
  });
}
